﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QLSV
{
    public partial class ThongTinSinhVien : Form
    {
        public ThongTinSinhVien()
        {
            InitializeComponent();
        }

        private SqlConnection Con;
        private DataTable Dt = new DataTable("SinhVien");
        private DataTable DtHS = new DataTable("SinhVien");
        private DataTable DtLO = new DataTable("Lop_Only");
        private SqlDataAdapter Da = new SqlDataAdapter();
        private Boolean Kt;

        private void Connect()
        {
            String Cn = "Data Source=LENOVOY510\\SQLEXPRESS;Initial Catalog=QLSV;Integrated Security=True";
            try
            {
                Con = new SqlConnection(Cn);
                Con.Open();
            }
            catch (Exception Ex)
            {
                MessageBox.Show("Không Thể Kết Nối Đến Cơ Sở Dữ Liệu!", "Lỗi!", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
        }

        private void DisConnect()
        {
            Con.Close();
            Con.Dispose();
            Con = null;
        }

        private void ThongTinSinhVien_Load(object sender, EventArgs e)
        {
            Connect();
            GetData();
            Binding();
        }

        private void GetData()
        {
            SqlCommand Com = new SqlCommand();
            Com.Connection = Con;
            Com.CommandType = CommandType.Text;
            Com.CommandText = "Select * from SinhVien";
            Da.SelectCommand = Com;
            Da.Fill(DtHS);

            Com.CommandText = "Select * from Lop_Only";
            Da.SelectCommand = Com;
            Da.Fill(DtLO);
            cbl.DataSource = DtLO;
            cbl.DisplayMember = "TenLop0";
            cbl.ValueMember = "MaLop0";
            cbl.SelectedValue = "MaLop0";

            Com.CommandType = CommandType.Text;
            Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 left outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   order by MaSV";
            Da.SelectCommand = Com;
            Da.Fill(Dt);
            dgvttsv.DataSource = Dt;

            dgvttsv.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvttsv.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[5].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[6].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[7].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[8].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[9].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[10].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvttsv.Columns[11].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvttsv.Columns[12].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        }

        private void Binding()
        {
            txtmsv.DataBindings.Clear();
            txtmsv.DataBindings.Add("Text", dgvttsv.DataSource, "Mã Sinh Viên");
            txth.DataBindings.Clear();
            txth.DataBindings.Add("Text", dgvttsv.DataSource, "Họ");
            txtt.DataBindings.Clear();
            txtt.DataBindings.Add("Text", dgvttsv.DataSource, "Tên");
            cbgt.DataBindings.Clear();
            cbgt.DataBindings.Add("Text", dgvttsv.DataSource, "Giới Tính");
            dtpns.DataBindings.Clear();
            dtpns.DataBindings.Add("Text", dgvttsv.DataSource, "Ngày Sinh");
            txtdc.DataBindings.Clear();
            txtdc.DataBindings.Add("Text", dgvttsv.DataSource, "Địa Chỉ");
            txtqq.DataBindings.Clear();
            txtqq.DataBindings.Add("Text", dgvttsv.DataSource, "Quê Quán");
            txtdt.DataBindings.Clear();
            txtdt.DataBindings.Add("Text", dgvttsv.DataSource, "Dân Tộc");
            txttg.DataBindings.Clear();
            txttg.DataBindings.Add("Text", dgvttsv.DataSource, "Tôn Giáo");
            txtsdt.DataBindings.Clear();
            txtsdt.DataBindings.Add("Text", dgvttsv.DataSource, "Số Điện Thoại");
            cbl.DataBindings.Clear();
            cbl.DataBindings.Add("Text", dgvttsv.DataSource, "Lớp");
            cbcn.DataBindings.Clear();
            cbcn.DataBindings.Add("Text", dgvttsv.DataSource, "Chuyên Ngành");
        }

        private void clickthoat_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn Có Muốn Thoát Không?", "Thoát!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                Close();
                Dispose();
            }
        }

        private void clickhuy_Click(object sender, EventArgs e)
        {
            txth.Text = "";
            txtt.Text = "";
            cbgt.Text = "";
            dtpns.Text = "";
            txtqq.Text = "";
            txtdc.Text = "";
            txtdt.Text = "";
            txttg.Text = "";
            txtsdt.Text = "";
            cbl.Text = "";
            cbcn.Text = "";
        }

        private bool KiemTra()
        {
            Kt = true;
           
            if (txth.Text == "")
            {
                MessageBox.Show("Bạn Chưa Nhập Họ!", "Thông Báo!", MessageBoxButtons.OK);
                Kt = false;
            }
            else if (txtt.Text == "")
            {
                MessageBox.Show("Bạn Chưa Nhập Tên!", "Thông Báo!", MessageBoxButtons.OK);
                Kt = false;
            }
            else if (dtpns.Value == null)
            {
                MessageBox.Show("Bạn Chưa Nhập Ngày Sinh!", "Thông Báo!", MessageBoxButtons.OK);
                Kt = false;
            }
            else if (cbl.SelectedValue == null)
            {
                MessageBox.Show("Bạn Chưa Chọn Lớp!", "Thông Báo!", MessageBoxButtons.OK);
                Kt = false;
            }

            else if (cbl.Text == "Tin Học 9 " && cbcn.Text == "")
            {
                MessageBox.Show("Bạn Chưa Chọn Chuyên Ngành!", "Thông Báo!", MessageBoxButtons.OK);
                Kt = false;
            }

            else if (cbl.Text != "Tin Học 9 " && cbcn.Text == "Hệ Thống Thông Tin")
            {
                MessageBox.Show("Không Thể Chọn Chuyên Ngành!", "Thông Báo", MessageBoxButtons.OK);
                Kt = false;
                cbcn.Text = null;
            }

            else if (cbl.Text != "Tin Học 9 " && cbcn.Text == "Khoa Học Máy Tính")
            {
                MessageBox.Show("Không Thể Chọn Chuyên Ngành!", "Thông Báo", MessageBoxButtons.OK);
                Kt = false;
                cbcn.Text = null;
            }

            else if (cbl.Text != "Tin Học 9 " && cbcn.Text == "An Ninh Mạng")
            {
                MessageBox.Show("Không Thể Chọn Chuyên Ngành!", "Thông Báo", MessageBoxButtons.OK);
                Kt = false;
                cbcn.Text = null;
            }

            else if (cbl.Text != "Tin Học 9 " && cbcn.Text == "Công Nghệ Phần Mềm")
            {
                MessageBox.Show("Không Thể Chọn Chuyên Ngành!", "Thông Báo", MessageBoxButtons.OK);
                Kt = false;
                cbcn.Text = null;
            }

            return Kt;
        }


        private void clicksua_Click(object sender, EventArgs e)
        {
            if (txtmsv.Text.Length > 0)
            {
                KiemTra();
                if (Kt == true)
                {
                    DataRow DtR = Dt.Select("[Mã Sinh Viên] = " + (txtmsv.Text))[0];
                    DtR.BeginEdit();
                    DtR["Họ"] = txth.Text;
                    DtR["Tên"] = txtt.Text;
                    if (cbgt.Text == "Nam")
                        DtR["Giới Tính"] = "Nam";
                    else if (cbgt.Text == "Nữ")
                        DtR["Giới Tính"] = "Nữ";
                    DtR["Ngày Sinh"] = dtpns.Value;
                    DtR["Địa Chỉ"] = txtdc.Text;
                    DtR["Quê Quán"] = txtqq.Text;
                    DtR["Dân Tộc"] = txtdt.Text;
                    DtR["Tôn Giáo"] = txttg.Text;
                    DtR["Số Điện Thoại"] = txtsdt.Text;
                    DtR.EndEdit();
                    SqlCommand ComUpdate = new SqlCommand();
                    ComUpdate.Connection = Con;
                    ComUpdate.CommandType = CommandType.Text;
                    ComUpdate.CommandText = @"Update SinhVien set Ho = @Ho,
                                                                 Ten = @Ten,
                                                                 GioiTinh = @GioiTinh,
                                                                 NgaySinh = @NgaySinh,
                                                                 DiaChi = @DiaChi,
                                                                 QueQuan = @QueQuan,   
                                                                 DanToc = @DanToc, 
                                                                 TonGiao = @TonGiao,
                                                                 SDT = @SDT                                                                                                             
                                                                 where MaSV = @MaSV";
                    ComUpdate.Parameters.Add("@MaSV", SqlDbType.NChar, 10, "Mã Sinh Viên");
                    ComUpdate.Parameters.Add("@Ho", SqlDbType.NVarChar, 30, "Họ");
                    ComUpdate.Parameters.Add("@Ten", SqlDbType.NVarChar, 10, "Tên");
                    ComUpdate.Parameters.Add("@GioiTinh", SqlDbType.NChar, 10, "Giới Tính");
                    ComUpdate.Parameters.Add("@NgaySinh", SqlDbType.Date, 50, "Ngày Sinh");
                    ComUpdate.Parameters.Add("@DiaChi", SqlDbType.NVarChar, 50, "Địa Chỉ");
                    ComUpdate.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 30, "Quê Quán");
                    ComUpdate.Parameters.Add("@DanToc", SqlDbType.NVarChar, 30, "Dân Tộc");
                    ComUpdate.Parameters.Add("@TonGiao", SqlDbType.NVarChar, 30, "Tôn Giáo");
                    ComUpdate.Parameters.Add("@SDT", SqlDbType.NChar, 20, "Số Điện Thoại");
                    Da.UpdateCommand = ComUpdate;
                    Da.Update(Dt);

                    DataRow DtR1 = Dt.Select("[Mã Sinh Viên] = " + (txtmsv.Text))[0];
                    DtR.BeginEdit();
                    DtR["Lớp"] = cbl.SelectedValue;
                    DtR.EndEdit();
                    SqlCommand ComUpdate1 = new SqlCommand();
                    ComUpdate1.Connection = Con;
                    ComUpdate1.CommandType = CommandType.Text;
                    ComUpdate1.Parameters.Clear();
                    ComUpdate1.CommandText = @"Update SinhVien_Lop_Now set MaLop2 = @MaLop,
                                                                          PS2 = @PS                                                                                                       
                                                                where MaSV2 = @MaSV";
                    ComUpdate1.Parameters.Add("@MaSV", SqlDbType.NChar, 10, "Mã Sinh Viên");
                    ComUpdate1.Parameters.Add("@MaLop", SqlDbType.NChar, 10, "Lớp");
                    ComUpdate1.Parameters.Add(new SqlParameter("@PS", (cbcn.SelectedIndex + 1).ToString()));
                    Da.UpdateCommand = ComUpdate1;
                    Da.Update(Dt);

                    MessageBox.Show("Bạn Đã Sửa Thành Công!", "Thông Báo!", MessageBoxButtons.OK);
                    Close();
                    Dispose();
                    ThongTinSinhVien TTSV = new ThongTinSinhVien();
                    TTSV.Show();
                }
                else 
                {
                    Close();
                    Dispose();
                    ThongTinSinhVien TTSV = new ThongTinSinhVien();
                    TTSV.Show();
                }
            }

            else
            {
                MessageBox.Show("Không Thể Thực Hiện!", "Thông Báo!", MessageBoxButtons.OK);
            }
        }

        private void clicktimkiem_Click(object sender, EventArgs e)
        {
            Dt.Clear();
            SqlCommand Com = new SqlCommand();
            Com.Connection = Con;
            Com.CommandType = CommandType.Text;

            if (txttkt.Text != "" && cbtkgt.Text != "" && txttkqq.Text !="" && cbtkl.Text != "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where Ten = @Ten and GioiTinh = @GioiTinh and QueQuan = @QueQuan and TenLop0 = @TenLop";

                Com.Parameters.Add("@Ten", SqlDbType.NVarChar, 10).Value = txttkt.Text;

                if (cbtkgt.Text == "Nam")
                {
                    Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nam";
                }
                else
                    if (cbtkgt.Text == "Nữ")
                    {
                        Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nữ";
                    }

                Com.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 50).Value = txttkqq.Text;
                Com.Parameters.Add("@TenLop", SqlDbType.NVarChar, 10).Value = cbtkl.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text != "" && cbtkgt.Text == "" && txttkqq.Text == "" && cbtkl.Text == "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where Ten = @Ten";

                Com.Parameters.Add("@Ten", SqlDbType.NVarChar, 10).Value = txttkt.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text == "" && cbtkgt.Text != "" && txttkqq.Text == "" && cbtkl.Text == "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where GioiTinh = @GioiTinh";

                if (cbtkgt.Text == "Nam")
                {
                    Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nam";
                }
                else
                    if (cbtkgt.Text == "Nữ")
                    {
                        Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nữ";
                    }

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text == "" && cbtkgt.Text == "" && txttkqq.Text != "" && cbtkl.Text == "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where QueQuan = @QueQuan";

                Com.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 50).Value = txttkqq.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text == "" && cbtkgt.Text == "" && txttkqq.Text == "" && cbtkl.Text != "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where TenLop0 = @TenLop";

                Com.Parameters.Add("@TenLop", SqlDbType.NVarChar, 10).Value = cbtkl.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text != "" && cbtkgt.Text != "" && txttkqq.Text == "" && cbtkl.Text == "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where Ten = @Ten and GioiTinh = @GioiTinh";

                Com.Parameters.Add("@Ten", SqlDbType.NVarChar, 10).Value = txttkt.Text;

                if (cbtkgt.Text == "Nam")
                {
                    Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nam";
                }
                else
                    if (cbtkgt.Text == "Nữ")
                    {
                        Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nữ";
                    }

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text != "" && cbtkgt.Text == "" && txttkqq.Text != "" && cbtkl.Text == "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where Ten = @Ten and QueQuan = @QueQuan";

                Com.Parameters.Add("@Ten", SqlDbType.NVarChar, 10).Value = txttkt.Text;

                Com.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 50).Value = txttkqq.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text != "" && cbtkgt.Text == "" && txttkqq.Text == "" && cbtkl.Text != "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where Ten = @Ten and GioiTinh = @GioiTinh and QueQuan = @QueQuan and TenLop0 = @TenLop";

                Com.Parameters.Add("@Ten", SqlDbType.NVarChar, 10).Value = txttkt.Text;

                Com.Parameters.Add("@TenLop", SqlDbType.NVarChar, 10).Value = cbtkl.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text == "" && cbtkgt.Text != "" && txttkqq.Text != "" && cbtkl.Text == "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where GioiTinh = @GioiTinh and QueQuan = @QueQuan";

                if (cbtkgt.Text == "Nam")
                {
                    Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nam";
                }
                else
                    if (cbtkgt.Text == "Nữ")
                    {
                        Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nữ";
                    }

                Com.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 50).Value = txttkqq.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text == "" && cbtkgt.Text != "" && txttkqq.Text == "" && cbtkl.Text != "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where GioiTinh = @GioiTinh and TenLop0 = @TenLop";

                if (cbtkgt.Text == "Nam")
                {
                    Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nam";
                }
                else
                    if (cbtkgt.Text == "Nữ")
                    {
                        Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nữ";
                    }

                Com.Parameters.Add("@TenLop", SqlDbType.NVarChar, 10).Value = cbtkl.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text == "" && cbtkgt.Text == "" && txttkqq.Text != "" && cbtkl.Text != "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where QueQuan = @QueQuan and TenLop0 = @TenLop";

                Com.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 50).Value = txttkqq.Text;
                Com.Parameters.Add("@TenLop", SqlDbType.NVarChar, 10).Value = cbtkl.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text != "" && cbtkgt.Text != "" && txttkqq.Text != "" && cbtkl.Text == "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where Ten = @Ten and GioiTinh = @GioiTinh and QueQuan = @QueQuan";

                Com.Parameters.Add("@Ten", SqlDbType.NVarChar, 10).Value = txttkt.Text;

                if (cbtkgt.Text == "Nam")
                {
                    Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nam";
                }
                else
                    if (cbtkgt.Text == "Nữ")
                    {
                        Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nữ";
                    }

                Com.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 50).Value = txttkqq.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text != "" && cbtkgt.Text != "" && txttkqq.Text == "" && cbtkl.Text != "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where Ten = @Ten and GioiTinh = @GioiTinh and TenLop0 = @TenLop";

                Com.Parameters.Add("@Ten", SqlDbType.NVarChar, 10).Value = txttkt.Text;

                if (cbtkgt.Text == "Nam")
                {
                    Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nam";
                }
                else
                    if (cbtkgt.Text == "Nữ")
                    {
                        Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nữ";
                    }

                Com.Parameters.Add("@TenLop", SqlDbType.NVarChar, 10).Value = cbtkl.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text != "" && cbtkgt.Text == "" && txttkqq.Text != "" && cbtkl.Text != "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where Ten = @Ten and QueQuan = @QueQuan and TenLop0 = @TenLop";

                Com.Parameters.Add("@Ten", SqlDbType.NVarChar, 10).Value = txttkt.Text;

                Com.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 50).Value = txttkqq.Text;
                Com.Parameters.Add("@TenLop", SqlDbType.NVarChar, 10).Value = cbtkl.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }

            else if (txttkt.Text == "" && cbtkgt.Text != "" && txttkqq.Text != "" && cbtkl.Text != "")
            {
                Com.CommandText = @"Select MaSV as N'Mã Sinh Viên',
                                          Ho as N'Họ',
                                          Ten as N'Tên',
                                          GioiTinh as N'Giới Tính',
                                          NgaySinh as N'Ngày Sinh',
	                                      (year(getdate())-year(NgaySinh)) as N'Tuổi',
	                                      DiaChi as N'Địa Chỉ',
                                          QueQuan as N'Quê Quán',
                                          DanToc as N'Dân Tộc',
                                          TonGiao as N'Tôn Giáo',
                                          SDT as N'Số Điện Thoại',
                                          TenLop0 as N'Lớp',
                                          ChuyenNganh as N'Chuyên Ngành'
                                   from SinhVien inner join SinhVien_Lop_Now
                                          on SinhVien.MaSV = SinhVien_Lop_Now.MaSV2                                                 
                                                 inner join Lop_Only
                                          on SinhVien_Lop_Now.MaLop2 = Lop_Only.MaLop0
                                                 full outer join Lop
                                          on SinhVien_Lop_Now.PS2 = Lop.PS
                                   where GioiTinh = @GioiTinh and QueQuan = @QueQuan and TenLop0 = @TenLop";

                if (cbtkgt.Text == "Nam")
                {
                    Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nam";
                }
                else
                    if (cbtkgt.Text == "Nữ")
                    {
                        Com.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 10).Value = "Nữ";
                    }

                Com.Parameters.Add("@QueQuan", SqlDbType.NVarChar, 50).Value = txttkqq.Text;
                Com.Parameters.Add("@TenLop", SqlDbType.NVarChar, 10).Value = cbtkl.Text;

                Da.SelectCommand = Com;
                Da.Fill(Dt);

                if (Dt.Rows.Count > 0)
                {
                    dgvttsv.DataSource = Dt;
                }
                else
                {
                    MessageBox.Show("Không Tìm Thấy Dữ Liệu Phù Hợp!", "Thông Báo!", MessageBoxButtons.OK);
                }
            }
        }

        private void clicktrolai_Click(object sender, EventArgs e)
        {
            Close();
            Dispose();
            DisConnect();
            ThongTinSinhVien TTSV = new ThongTinSinhVien();
            TTSV.Show();
        }

        private void clickthem_Click(object sender, EventArgs e)
        {
            Close();
            Dispose();
            DisConnect();
            ThemSinhVien TSV = new ThemSinhVien();
            TSV.Show();
        }

        private void clickxoa_Click(object sender, EventArgs e)
        {
            if (txtmsv.Text.Length > 0)
            {
                SqlCommand Com = new SqlCommand();
                Com.Connection = Con;
                Com.CommandType = CommandType.StoredProcedure;
                Com.CommandText = "XoaSV";
                Com.Parameters.Add("@MaSV", SqlDbType.NChar, 10).Value = txtmsv.Text;
                SqlDataReader Dr = Com.ExecuteReader();
                Dt.Load(Dr);
                
                MessageBox.Show("Bạn Đã Xóa Thành Công!!!", "Thông Báo!!!", MessageBoxButtons.OK);

                Close();
                Dispose();
                DisConnect();
                ThongTinSinhVien TTSV = new ThongTinSinhVien();
                TTSV.Show();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            txttkt.Text = "";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            cbtkgt.Text = "";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            txttkqq.Text = "";
        }

        private void button4_Click(object sender, EventArgs e)
        {
            cbtkl.Text = "";
        }
    }
}
